package com.isoft.airportsystem.controller.system;

import com.isoft.airportsystem.common.Result;
import com.isoft.airportsystem.entity.system.User;
import com.isoft.airportsystem.entity.system.Role;
import com.isoft.airportsystem.service.system.UserService;
import jakarta.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 主控制器 - 处理侧边栏相关的接口
 */
@RestController
@RequestMapping("/api/main")
@CrossOrigin(origins = {"http://localhost:8080", "http://localhost:3000", "http://localhost:5173"}, allowCredentials = "true")
public class MainController {

    @Autowired
    private UserService userService;

    /**
     * 加载用户身份信息
     */
    @GetMapping("/loadIdentity")
    public Result<String> loadIdentity() {
        // 这里可以根据实际业务逻辑返回用户身份
        // 暂时返回默认身份
        return Result.success("admin");
    }

    /**
     * 加载用户信息（包含角色列表）
     */
    @GetMapping("/loadUserInfo")
    public Result<Map<String, Object>> loadUserInfo(HttpSession session) {
        Long userId = (Long) session.getAttribute("userId");
        if (userId == null) {
            return Result.fail("未登录");
        }
        com.isoft.airportsystem.entity.system.User user = userService.selectUserById(userId);
        if (user == null) {
            return Result.fail("用户不存在");
        }
        Map<String, Object> userInfo = new HashMap<>();
        userInfo.put("userId", user.getUserId());
        userInfo.put("username", user.getUsername());
        userInfo.put("realName", user.getRealName());
        userInfo.put("avatar", user.getAvatar());
        // 查询角色列表
        List<Role> roles = userService.selectRolesByUserId(userId); // 需在UserService实现
        userInfo.put("roles", roles);
        return Result.success(userInfo);
    }

    /**
     * 用户登出
     */
    @GetMapping("/signOut")
    public Result<String> signOut() {
        // 这里可以添加登出逻辑，如清除会话等
        return Result.success("登出成功");
    }
} 